home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / ptrplynt.lha / PTReplay.mod < prev    next >
Text File  |  1995-09-19  |  5KB  |  170 lines

  1. (* ==================================================================== *)
  2.  
  3. (*
  4. ******* PTReplay/--about-- *******
  5. *
  6. *    $RCSfile: PTReplay.mod $
  7. *   $Revision: 1.3 $
  8. *       $Date: 1995/09/19 17:14:11 $
  9. *     $Author: phf $
  10. *
  11. * Description: AmigaOberon interface to ptreplay.library.
  12. *
  13. *   Copyright: Copyright (c) 1995 by Peter Fröhlich [phf].
  14. *              All rights reserved.
  15. *
  16. *     License: This  file  is  freely distributable as long as no
  17. *              money  is  made by distributing it.  If you modify
  18. *              it   please  let  me  know.   You  may  distribute
  19. *              modified versions as long as my original copyright
  20. *              is  respected  and  your modifications are clearly
  21. *              marked  as  such.   It  may  only  be used in non-
  22. *              commercial projects.
  23. *
  24. *      e-mail: p.froehlich@amc.cube.net
  25. *
  26. *     $Source: Users:Homes/phf/Programming/Development/PTReplay/REPOSITORY/PTReplay.mod $
  27. *
  28. **************
  29. *
  30. **************
  31. *)
  32.  
  33. (*
  34. ******* PTReplay/--history-- *******
  35. *
  36. * $Log: PTReplay.mod $
  37. * Revision 1.3  1995/09/19  17:14:11  phf
  38. * Corrected V6 functions, minor changes to Autodocs.
  39. *
  40. * Revision 1.2  1995/09/15  18:18:21  phf
  41. * Adapted to ptreplay.library V6.
  42. *
  43. * Revision 1.1  1995/08/30  06:11:25  phf
  44. * Initial revision
  45. *
  46. **************
  47. *
  48. **************
  49. *)
  50.  
  51. (* ==================================================================== *)
  52.  
  53. MODULE PTReplay;
  54.  
  55. (* ==================================================================== *)
  56.  
  57. IMPORT E* := Exec, S := SYSTEM;
  58.  
  59. (* ==================================================================== *)
  60.  
  61. (*
  62. ******* PTReplay/--background-- *******
  63. *
  64. *   PURPOSE
  65. *
  66. *    This module provides an AmigaOberon interface to the
  67. *    ptreplay.library by Mattias Karlsson / BetaSoft.
  68. *
  69. *   NOTES
  70. *
  71. *    Remember to check "base # NIL" before making any calls
  72. *    to the library.
  73. *
  74. *   SEE ALSO
  75. *
  76. *    ptreplay.doc
  77. *
  78. *   REFERENCES
  79. *
  80. *    Aminet: mus/play/PTReplay#?.lha
  81. *
  82. **************
  83. *
  84. **************
  85. *)
  86.  
  87. (* ==================================================================== *)
  88.  
  89. CONST
  90.   ptReplayName* = "ptreplay.library";
  91.  
  92. TYPE
  93.   ModulePtr* = UNTRACED POINTER TO Module;
  94.   Module* = STRUCT
  95.     modName-: E.LSTRPTR; (* "-" means read-only in Oberon-2 *)
  96.     (* The rest is private for now, but more details may be released later. *)
  97.   END;
  98.  
  99. TYPE
  100.   SampleName* = ARRAY 22 OF CHAR;
  101.  
  102.   SamplePtr* = UNTRACED POINTER TO Sample;
  103.   Sample* = STRUCT
  104.     name-: SampleName;  (* Null terminated string with samplename *)
  105.     length-: E.UWORD;   (* Sample length in words *)
  106.     fineTune-: E.UBYTE; (* FineTune of sample in lower 4 bits *)
  107.     volume-: E.UBYTE;   (* Volume of sample *)
  108.     repeat-: E.UWORD;   (* Repeat start in number of words *)
  109.     repLen-: E.UWORD;   (* Repeat length in number of words *)
  110.   END;
  111.  
  112. VAR
  113.   base-: E.LibraryPtr;
  114.  
  115. (* ==================================================================== *)
  116.  
  117. PROCEDURE LoadModule*   {base,- 30}(name{8}: ARRAY OF CHAR): ModulePtr;
  118. PROCEDURE UnloadModule* {base,- 36}(module{8}: ModulePtr);
  119. PROCEDURE Play*         {base,- 42}(module{8}: ModulePtr): LONGINT;
  120. PROCEDURE Stop*         {base,- 48}(module{8}: ModulePtr): LONGINT;
  121. PROCEDURE Pause*        {base,- 54}(module{8}: ModulePtr): LONGINT;
  122. PROCEDURE Resume*       {base,- 60}(module{8}: ModulePtr): LONGINT;
  123.  
  124. (* New in V2 *)
  125.  
  126. PROCEDURE Fade*         {base,- 66}(module{8}: ModulePtr; speed{0}: E.UBYTE);
  127.  
  128. (* New in V3 *)
  129.  
  130. PROCEDURE SetVolume*    {base,- 72}(module{8}: ModulePtr; speed{0}: E.UBYTE);
  131.  
  132. (* New in V4 *)
  133.  
  134. PROCEDURE SongPos*      {base,- 78}(module{8}: ModulePtr): E.UBYTE;
  135. PROCEDURE SongLen*      {base,- 84}(module{8}: ModulePtr): E.UBYTE;
  136. PROCEDURE SongPattern*  {base,- 90}(module{8}: ModulePtr; position{0}: E.UWORD): E.UBYTE;
  137. PROCEDURE PatternPos*   {base,- 96}(module{8}: ModulePtr): E.UBYTE;
  138. PROCEDURE PatternData*  {base,-102}(module{8}: ModulePtr; pattern{0},row{1}: E.UBYTE): E.APTR;
  139. PROCEDURE InstallBits*  {base,-108}(module{8}: ModulePtr; restart{0},nextPattern{1},nextRow{2},fade{3}: E.UBYTE);
  140. PROCEDURE SetupMod*     {base,-114}(moduleFile{8}: E.APTR): ModulePtr;
  141. PROCEDURE FreeMod*      {base,-120}(module{8}: ModulePtr);
  142. PROCEDURE StartFade*    {base,-126}(module{8}: ModulePtr; speed{0}: E.UBYTE);
  143.  
  144. (* New in V5 *)
  145.  
  146. PROCEDURE OnChannel*    {base,-132}(module{8}: ModulePtr; channels{0}: LONGSET);
  147. PROCEDURE OffChannel*   {base,-138}(module{8}: ModulePtr; channels{0}: LONGSET);
  148. PROCEDURE SetPos*       {base,-144}(module{8}: ModulePtr; position{0}: E.UBYTE);
  149. PROCEDURE SetPri*       {base,-150}(priority{0}: E.BYTE);
  150. PROCEDURE GetPri*       {base,-156}(): E.BYTE;
  151.  
  152. (* New in V6 *)
  153.  
  154. PROCEDURE GetChannel*   {base,-162}(): E.UBYTE;
  155. PROCEDURE GetSample*    {base,-168}(module{8}: ModulePtr; number{0}: E.UBYTE): SamplePtr;
  156.  
  157. (* ==================================================================== *)
  158.  
  159. BEGIN
  160.  
  161.   base := E.OpenLibrary (ptReplayName, 0);
  162.  
  163. CLOSE
  164.  
  165.   IF (base # NIL) THEN E.CloseLibrary (base) END;
  166.  
  167. END PTReplay.
  168.  
  169. (* ==================================================================== *)
  170.